import Vue from 'vue';
import http from '@src/util/http';
import SettingProductFieldsView from './setting.product.fields.vue';

import { Loading } from 'element-ui';
import { getAsyncSettingProductV2ProductFieldInitData } from '@src/api/InitDataApi'
import qs from 'qs';
import platform from '@src/platform';

Vue.prototype.$http = http;

const componentItem = (initData) => {
  return {
    data() {
      return {
        initData
      }
    },
    components: {
      SettingProductFieldsView
    },
    render(h) {
      return (
        <SettingProductFieldsView initData={this.initData} />
      )
    }
  }
}
  
Vue.component('async-component', function(resolve) {
    
  // 需要加loading 打开此注释
  // const instance = Loading.service({ fullscreen: true });
    
    let query = qs.parse(window.location.search.substr(1));
    const params = Object.assign({}, query, {})
    
  getAsyncSettingProductV2ProductFieldInitData(params).then(result => {
      
    const initData = (result && result.data && result.data.initJson) || {}
    const title = (result && result.data && result.data.title) || ''
    const isSuccess = result.succ || result.success
      
    if (!isSuccess) {
      window.location.href = '/500'
      return 
    }
      
    try {
      window._init = JSON.stringify(initData)
    } catch (error) {
      console.error('initData 赋值失败')
    }
      
    // 需要加loading 打开此注释
    // instance.close();
      
    if (window.frameElement) {
      const currentTabId = window.frameElement.dataset.id;
      platform.setTabTitle({
        id: currentTabId,
        title
      })
    }
    resolve(componentItem(initData))
      
  }).catch(error => {
    console.error(error)
    window.location.href = '/500'
  })
    
});
  
let app = {
  render(h) {
    return <async-component />
  }
}
  
export default app;